function openMdlAdv(modelName)
%OPENMDLADV 打开模型顾问GUI界面
%   此函数打开指定Simulink模型的模型顾问（Model Advisor）GUI界面，
%   允许用户以交互方式使用模型检查工具。
%
%语法:
%   openMdlAdv(modelName)
%
%输入参数:
%   modelName - 要打开模型顾问的Simulink模型名称（字符串）
%
%输出参数:
%   无
%
%说明:
%   - 首先检查指定模型是否已加载到内存中
%   - 如果模型已加载，将其置为焦点窗口
%   - 自动切换到项目工作目录，确保正确的工作环境
%   - 如果当前不在工作目录，会显示警告对话框
%   - 启动模型顾问GUI进行交互式模型检查
%   - 如果模型未加载，显示警告并退出
%
%先决条件:
%   - 指定的Simulink模型必须已经在MATLAB中打开
%   - 项目结构必须正确配置（依赖prjDirStruct）
%
%示例:
%   % 打开已加载模型的模型顾问
%   open_system('MyModel');
%   openMdlAdv('MyModel');
%
%依赖项:
%   bdIsLoaded - 检查模型是否已加载
%   open_system - 打开/聚焦系统
%   ProjectPathManager.getDirPath - 获取项目目录路径
%   modeladvisor - 启动模型顾问
%
%参见:
%   modeladvisor, bdIsLoaded, open_system, ProjectPathManager
%

%版本: 1.0
%日期: 2020-2024
%


% Check to see if model has been open
if bdIsLoaded(modelName)
    % bring it in focus
    open_system(modelName); 
    % Move to work folder - If slprj is in work folder, remove it to avoid the error msg
    prjDirWork = ProjectPathManager.getDirPath('work', modelName);
    if ~strcmp(pwd, prjDirWork)
        % if not in work directory, move to work directory (this is to be safe)
        cd(prjDirWork);
        warndlg(['Working directory has been changed to: ', prjDirWork]);
    end
    % open Model Advisor
    modeladvisor(modelName);
else
    warndlg(['Please open ', modelName, ' first.'] ,'Warning');
    return;
end

end
